package com.zjsru.plan2023.oneday;

import java.util.ArrayList;
import java.util.List;

/**
 * @Author: CookLee
 * @Date: 2023/7/6
 *  拆分成最多数目的正偶数之和
 *  给你一个整数 finalSum 。请你将它拆分成若干个 互不相同 的正偶数之和，且拆分出来的正偶数数目 最多 。
 *
 *  输入：finalSum = 12
 * 输出：[2,4,6]
 * 解释：以下是一些符合要求的拆分：(2 + 10)，(2 + 4 + 6) 和 (4 + 8) 。
 * (2 + 4 + 6) 为最多数目的整数，数目为 3 ，所以我们返回 [2,4,6] 。
 * [2,6,4] ，[6,2,4] 等等也都是可行的解。
 *
 *  输入：finalSum = 7
 * 输出：[]
 * 解释：没有办法将 finalSum 进行拆分。
 * 所以返回空数组。
 *
 */
public class MaximumEvenSplit {
    
    /**
     * 贪心
     *
     * @param finalSum 最后金额
     * @return {@link List}<{@link Long}>
     */
    public List<Long> maximumEvenSplit(long finalSum) {
        List<Long> ans = new ArrayList<>();
        if (finalSum % 2 != 0) {
            return new ArrayList<>();
        }
        for (long i = 2; i <= finalSum; i += 2) {
            ans.add(i);
            finalSum -= i;
        }
        //如果finalSum不为0，则重新赋值最后一个数： 原有数+finalSum
        ans.set(ans.size() - 1, ans.get(ans.size() - 1) + finalSum);
        return ans;
    }
    
    public static void main(String[] args) {
        MaximumEvenSplit maximumEvenSplit = new MaximumEvenSplit();
        long finalSum = 12;
        System.out.println(maximumEvenSplit.maximumEvenSplit(finalSum));
    }
    
}
